![]() |
![]() |
![]() | |
![]() ![]() ![]() ![]()
╨αßε≥α ± ∩αφσδ ∞Φ |
╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α α∩δσ≥α Options╧ε∞Φ∞ε ε±φεΓφεπε Ωδα±±α Options Γ φα°σ∞ α∩δσ≥σ ±ετΣασ≥± σ∙σ ≥≡Φ Ωδα±±α Σδ ∩αφσδσΘ ± Φ∞σφα∞Φ FirstPanel, CardPanel Φ ControlPanel. ╩δα±± FirstPanel ±εε≥Γσ≥±≥Γ≤σ≥ ±α∞εΘ Γσ≡⌡φσΘ ∩αφσδΦ, Γ Ωε≥ε≡εΘ ε≥εß≡αµασ≥± ±≥≡εΩα ≥σΩ±≥α First panel. ╩δα±±√ CardPanel Φ ControlPanel Φ±∩δⁿτ≤■≥± Σδ ±ετΣαφΦ ∩αφσδσΘ ±ε ±∩Φ±Ωα∞Φ Φ ≤∩≡αΓδ ■∙Φ∞Φ Ωφε∩Ωα∞Φ, ±εε≥Γσ≥±≥Γσφφε. ╠√ ß≤Σσ∞ ≡α±±∞α≥≡ΦΓα≥ⁿ ²≥Φ Ωδα±±√ ∩ε ε≥Σσδⁿφε±≥Φ. ├δαΓφ√Θ Ωδα±± α∩δσ≥α Options┬ πδαΓφε∞ Ωδα±±σ α∩δσ≥α Options ∞√ ε∩≡σΣσδΦδΦ ≥≡Φ ∩εδ ± Φ∞σφα∞Φ pPanel1, pCard Φ pControl: FirstPanel pPanel1; CardPanel pCard; ControlPanel pControl; ┬ φΦ⌡ ⌡≡αφ ≥± ±±√δΩΦ φα ≥≡Φ Ωδα±±α, ±ετΣαφφ√⌡ φα∞Φ Σδ ≥≡σ⌡ ∩αφσδσΘ. ╠σ≥εΣ init╧≡σµΣσ Γ±σπε ∞σ≥εΣ init ≤±≥αφαΓδΦΓασ≥ Σδ εΩφα α∩δσ≥α ≡σµΦ∞ ≡ατ∞σ∙σφΦ GridLayout: setLayout(new GridLayout(3, 1)); ╬Ωφε α∩δσ≥α ΣσδΦ≥± φα ≥≡Φ πε≡Φτφ≥αδⁿφ√σ εßδα±≥Φ, Γ Ωε≥ε≡√⌡ ∞√ ß≤Σσ∞ ≡ατ∞σ∙α≥ⁿ ∩αφσδΦ. ╧αφσδΦ ±ετΣα■≥± ± ∩ε∞ε∙ⁿ■ ε∩σ≡α≥ε≡α new ΩαΩ εß·σΩ≥√ ±εε≥Γσ≥±≥Γ≤■∙Φ⌡ Ωδα±±εΓ, ε∩≡σΣσδσφφ√⌡ Γ φα°σ∞ ∩≡ΦδεµσφΦΦ: pPanel1 = new FirstPanel(); add(pPanel1); pCard = new CardPanel(pPanel1); add(pCard); pControl = new ControlPanel(pCard); add(pControl); ─δ ΣεßαΓδσφΦ ∩αφσδσΘ Γ εΩφε α∩δσ≥α ∞√ Φ±∩εδⁿτεΓαδΦ ∞σ≥εΣ add. ─αδσσ ∞σ≥εΣ init ≤±≥αφαΓδΦΓασ≥ φα≈αδⁿφ√σ τφα≈σφΦ Σδ ÷Γσ≥α ⌠εφα Φ ≥σΩ±≥α Γσ≡⌡φσΘ ∩αφσδΦ: pPanel1.setBackground(Color.yellow); pPanel1.setForeground(Color.black); ╬ß≡α≥Φ≥σ ΓφΦ∞αφΦσ, ≈≥ε ∞√ Γ√τ√Γασ∞ ∞σ≥εΣ√ setBackground Φ setForeground Σδ εß·σΩ≥α pPanel1. ╧ε±δσ Γ√∩εδφσφΦ Γ±σ⌡ ²≥Φ⌡ ΣσΘ±≥ΓΦΘ ∞σ≥εΣ init ∩σ≡σ≡Φ±εΓ√Γασ≥ εΩφε α∩δσ≥α, Γ√τ√Γα ∞σ≥εΣ repaint: repaint(); ╩δα±± FirstPanel╠√ ±ετΣαδΦ Ωδα±± FirstPanel φα ßατσ Ωδα±±α Panel, ε∩≡σΣσδΦΓ Γ φσ∞ εΣφε ∩εδσ ≥Φ∩α String Φ ∩σ≡σε∩≡σΣσδΦΓ ∞σ≥εΣ paint: class FirstPanel extends Panel { . . . } ╥σΩ±≥εΓεσ ∩εδσ szFontName ⌡≡αφΦ≥ φατΓαφΦσ °≡Φ⌠≥α, ± Φ±∩εδⁿτεΓαφΦσ∞ Ωε≥ε≡επε Γ εΩφσ Γσ≡⌡φσΘ ∩αφσδΦ ε≥εß≡αµασ≥± ≥σΩ±≥εΓα ±≥≡εΩα: String szFontName = "TimesRoman"; ╠σ≥εΣ paint ε∩≡σΣσδ σ≥ ≥σΩ≤∙Φσ ≡ατ∞σ≡√ ∩αφσδΦ Φ ≡Φ±≤σ≥ ΓεΩ≡≤π φσσ ∩≡ ∞ε≤πεδⁿφ≤■ ≡α∞Ω≤: Dimension dimAppWndDimension = getSize(); g.drawRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); ─αδσσ ∞σ≥εΣ paint Γ√ßΦ≡ασ≥ Γ Ωεφ≥σΩ±≥ ε≥εß≡αµσφΦ , ±Γ ταφφ√Θ ± ∩αφσδⁿ■, °≡Φ⌠≥ ± φατΓαφΦσ∞ szFontName Φ ≡Φ±≤σ≥ ≥σΩ±≥εΓ≤■ ±≥≡εΩ≤: g.setFont(new Font(szFontName, Font.PLAIN, 24)); g.drawString("First panel", 10, 50); ╟α∞σ≥Φ∞, ≈≥ε ±≡ατ≤ ∩ε±δσ τα∩≤±Ωα α∩δσ≥α ≡α∞Ωα Φ ±≥≡εΩα ß≤Σ≤≥ φα≡Φ±εΓαφ√ ± Φ±∩εδⁿτεΓαφΦσ∞ ≈σ≡φεπε ÷Γσ≥α, Γ√ß≡αφφεπε Γ Ωεφ≥σΩ±≥ ε≥εß≡αµσφΦ ∩αφσδΦ ∩ε ≤∞εδ≈αφΦ■. ┬ ΣαδⁿφσΘ°σ∞ Γ√ ∞εµσ≥σ Φτ∞σφΦ≥ⁿ ²≥ε≥ ÷Γσ≥ ∩≡Φ ∩ε∞ε∙Φ ±εε≥Γσ≥±≥Γ≤■∙σΘ ±≥≡αφΦ÷√ ßδεΩφε≥α, ≡σαδΦτεΓαφφεπε Γε Γ≥ε≡εΘ ∩αφσδΦ. ╧ε±δσΣφσσ ΣσΘ±≥ΓΦσ, Ωε≥ε≡εσ Γ√∩εδφ σ≥ ∞σ≥εΣ paint ∩σ≡ΓεΘ ∩αφσδΦ - Γ√τεΓ ∞σ≥εΣα paint Φτ ≡εΣΦ≥σδⁿ±Ωεπε Ωδα±±α: super.paint(g); ▌≥ε ∩≡ΦΓεΣΦ≥ Ω ∩σ≡σ≡Φ±εΓΩσ εΩφα α∩δσ≥α. ╩δα±± CardPanel╤ ∩ε∞ε∙ⁿ■ Ωδα±±α CardPanel ∞√ ±ετΣαδΦ ∩αφσδⁿ Σδ ßδεΩφε≥α, ±εΣσ≡µα∙σπε ≥≡Φ ±≥≡αφΦ÷√. ▌≥ε≥ Ωδα±±, ≥αΩ µσ ΩαΩ Φ ∩≡σΣ√Σ≤∙ΦΘ, ±ετΣαφ φα ßατσ Ωδα±±α Panel. ╧εδ Ωδα±±α CardPanel┬ ∩εδ ⌡ pBgColor, pFgColor Φ pFont ⌡≡αφ ≥± ±±√δΩΦ φα ∩αφσδΦ ±≥≡αφΦ÷ ßδεΩφε≥α, Ωε≥ε≡√σ ∞√ ≡ατ∞σ±≥Φ∞ Γφ≤≥≡Φ ∩αφσδΦ Ωδα±±α CardPanel: Panel pBgColor; Panel pFgColor; Panel pFont; ╩≡ε∞σ ≥επε, Γ ∩εδσ pControlled ⌡≡αφΦ≥± ±±√δΩα φα Γσ≡⌡φ■■ ∩αφσδⁿ ± ≥σΩ±≥εΓεΘ ±≥≡εΩεΘ First Panel. Panel pControlled; ▌≥ε ∩εδσ ß≤Σσ≥ ∩≡εΦφΦ÷ΦαδΦτΦ≡εΓαφε Ωεφ±≥≡≤Ω≥ε≡ε∞ Ωδα±±α CardPanel. ┬ ±δσΣ≤■∙Φ⌡ ≥≡σ⌡ ∩εδ ⌡ ∞√ ⌡≡αφΦ∞ ±±√δΩΦ φα ±∩Φ±ΩΦ Ωδα±±α Choice, ∩≡σΣφατφα≈σφφ√σ, ±εε≥Γσ≥±≥Γσφφε, Σδ Γ√ßε≡α ÷Γσ≥α ≥σΩ±≥α, ÷Γσ≥α ⌠εφα Φ °≡Φ⌠≥α: Choice chBgColor; Choice chFgColor; Choice chFont; ╥≡Φ ∩εδ Ωδα±±α Label ±εΣσ≡µα≥ ±±√δΩΦ φα ∩εΣ∩Φ±Φ Ω ≤Ωαταφφ√∞ Γ√°σ ±∩Φ±Ωα∞: Label lbBgColor; Label lbFgColor; Label lbFont; ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α CardPanel╧≡Φ ±ετΣαφΦΦ εß·σΩ≥α Ωδα±±α CardPanel ∞√ ∩σ≡σΣασ∞ Ωεφ±≥≡≤Ω≥ε≡≤ ±±√δΩ≤ φα Γσ≡⌡φ■■ ∩αφσδⁿ, ∩α≡α∞σ≥≡α∞Φ Ωε≥ε≡εΘ φ≤µφε ≤∩≡αΓδ ≥ⁿ. ╩εφ±≥≡≤Ω≥ε≡ τα∩Φ±√Γασ≥ ²≥≤ ±±√δΩ≤ Γ ∩εδσ pControlled: public CardPanel(Panel pControlledPanel) { pControlled = pControlledPanel; . . . } ╟α≥σ∞ Ωεφ±≥≡≤Ω≥ε≡ ≤±≥αφαΓδΦΓασ≥ ≡σµΦ∞ ≡ατ∞σ∙σφΦ CardLayout, ε±≥αΓδ τατε≡ ∩ε Γσ≡≥ΦΩαδΦ Φ πε≡Φτεφ≥αδΦ, ≡αΓφ√Θ ∩ ≥Φ ∩ΦΩ±σδα∞: setLayout(new CardLayout(5, 5)); ═α ±δσΣ≤■∙σ∞ ²≥α∩σ ∞√ ±ετΣασ∞ ≥≡Φ ∩αφσδΦ Σδ ±≥≡αφΦ÷ ßδεΩφε≥α Φ ΣεßαΓδ σ∞ Φ⌡ Γ ∩αφσδⁿ CardPanel, ταΣαΓα Φ∞σφα: pBgColor = new Panel(); pFgColor = new Panel(); pFont = new Panel(); add("BgColor", pBgColor); add("FgColor", pFgColor); add("Font", pFont); ╥σ∩σ≡ⁿ φα∞ φ≤µφε ±ετΣα≥ⁿ Φ τα∩εδφΦ≥ⁿ ≥≡Φ ±∩Φ±Ωα, ∩≡σΣφατφα≈σφφ√Θ Σδ Γ√ßε≡α ÷Γσ≥α Φ °≡Φ⌠≥α. ▌≥Φ ±∩Φ±ΩΦ ±ετΣα■≥± ΩαΩ εß·σΩ≥√ Ωδα±±α Choice: chBgColor = new Choice(); chFgColor = new Choice(); chFont = new Choice(); ╧ε±δσ ±ετΣαφΦ ±∩Φ±ΩΦ φα∩εδφ ■≥± ≥σΩ±≥εΓ√∞Φ ±≥≡εΩα∞Φ. ┬ ΩαµΣ√Θ ±∩Φ±εΩ ∞√ ΣεßαΓδ σ∞ ∩ε ≥≡Φ ±≥≡εΩΦ: chBgColor.add("Yellow"); chBgColor.add("Green"); chBgColor.add("White"); chFgColor.add("Black"); chFgColor.add("Red"); chFgColor.add("Green"); chFont.add("TimesRoman"); chFont.add("Helvetica"); chFont.add("Courier"); ─δ ≥επε ≈≥εß√ ±φαßΣΦ≥ⁿ ±∩Φ±ΩΦ ∩εΣ∩Φ± ∞Φ, ∞√ ±ετΣασ∞ ≥≡Φ εß·σΩ≥α Ωδα±±α Label: lbBgColor = new Label("Background color"); lbFgColor = new Label("Foreground color"); lbFont = new Label("Font"); ▌≥Φ εß·σΩ≥√, α ≥αΩµσ ±∩Φ±ΩΦ ΣεßαΓδ ■≥± φα ±ΓεΦ ±≥≡αφΦ÷√ ßδεΩφε≥α (≥ε σ±≥ⁿ Γ ±ΓεΦ ∩αφσδΦ): pBgColor.add(lbBgColor); pBgColor.add(chBgColor); pFgColor.add(lbFgColor); pFgColor.add(chFgColor); pFont.add(lbFont); pFont.add(chFont); ═α ²≥ε∞ ≡αßε≥α ∞σ≥εΣα init ταΩαφ≈ΦΓασ≥± . ╠σ≥εΣ action╠σ≥εΣ action εß≡αßα≥√Γασ≥ ±εß√≥Φ , ΓετφΦΩα■∙Φσ Γ ≡στ≤δⁿ≥α≥σ Γ√ßε≡α φεΓ√⌡ τφα≈σφΦΘ Φτ ±∩Φ±ΩεΓ, ≡α±∩εδεµσφφ√⌡ φα ±≥≡αφΦ÷α⌡ ßδεΩφε≥α. ╤⌡σ∞α εß≡αßε≥ΩΦ ±εß√≥ΦΘ φσ Φ∞σσ≥ φΦΩαΩΦ⌡ ε±εßσφφε±≥σΘ. ┬φα≈αδσ ∞σ≥εΣ action ∩≡εΓσ≡ σ≥, ≈≥ε ±εß√≥Φσ Γ√τΓαφε ±∩Φ±Ωε∞ Ωδα±±α Choice: if(evt.target instanceof Choice) { . . . return true; } return false; } ╤εß√≥Φ , ±Γ ταφφ√σ ± Φτ∞σφσφΦσ∞ ÷Γσ≥α ⌠εφα, εß≡αßα≥√Γα■≥± ±δσΣ≤■∙Φ∞ εß≡ατε∞: ch = (Choice)evt.target; if(evt.target.equals(chBgColor)) { if(ch.getSelectedIndex() == 0) pControlled.setBackground( Color.yellow); else if(ch.getSelectedIndex() == 1) pControlled.setBackground( Color.green); else if(ch.getSelectedIndex() == 2) pControlled.setBackground( Color.white); } ╟Σσ±ⁿ ∞σ≥εΣ setBackground Γ√τ√Γασ≥± Σδ εß·σΩ≥α, ±±√δΩα φα Ωε≥ε≡√Θ ∩σ≡σΣαφα Ωεφ±≥≡≤Ω≥ε≡≤ Ωδα±±α Φ τα∩Φ±αφα Γ ∩εδσ pControlled. ▌≥ε ±±√δΩα φα ∩αφσδⁿ, ≡ατ∞σ∙σφφ≤■ Γ Γσ≡⌡φσΘ ≈α±≥Φ εΩφα φα°σπε α∩δσ≥α. └φαδεπΦ≈φ√∞ εß≡ατε∞ Φτ∞σφ σ≥± ÷Γσ≥ ≥σΩ±≥α Φ ≡α∞ΩΦ Σδ Γσ≡⌡φσΘ ∩αφσδΦ: else if(evt.target.equals(chFgColor)) { if(ch.getSelectedIndex() == 0) pControlled.setForeground( Color.black); else if(ch.getSelectedIndex() == 1) pControlled.setForeground( Color.red); else if(ch.getSelectedIndex() == 2) pControlled.setForeground( Color.green); } ─δ Φτ∞σφσφΦ °≡Φ⌠≥α ∞√ ≤±≥αφαΓδΦΓασ∞ φεΓεσ τφα≈σφΦσ ∩σ≡σ∞σφφεΘ ∩εδ szFontName, ε∩≡σΣσδσφφεΘ Γ Ωδα±±σ FirstPanel: else if(evt.target.equals(chFont)) { if(ch.getSelectedIndex() == 0) ((FirstPanel)pControlled).szFontName = "TimesRoman"; else if(ch.getSelectedIndex() == 1) ((FirstPanel)pControlled).szFontName = "Helvetica"; else if(ch.getSelectedIndex() == 2) ((FirstPanel)pControlled).szFontName = "Courier"; } ─δ ≥επε ≈≥εß√ αΣ≡σ±εΓα≥ⁿ± Ω ∩εδ■ szFontName, φα∞ ∩≡Φ°δε±ⁿ Γ√∩εδφΦ≥ⁿ Γφεσ ∩≡σεß≡ατεΓαφΦσ ≥Φ∩α ±±√δΩΦ pControlled. ╧ε±δσΣφσσ ΣσΘ±≥ΓΦσ, Ωε≥ε≡εσ ±εΓσ≡°ασ≥ ∞σ≥εΣ action - ²≥ε ∩σ≡σ≡Φ±εΓΩα εΩφα Γσ≡⌡φσΘ ∩αφσδΦ, Ωε≥ε≡α Γ√∩εδφ σ≥± ± ∩ε∞ε∙ⁿ■ ∞σ≥εΣα repaint: pControlled.repaint(); ╩δα±± ControlPanel╩δα±± ControlPanel ±ετΣαφ Σδ φΦµφσΘ ∩αφσδΦ ± ≤∩≡αΓδ ■∙Φ∞Φ Ωφε∩Ωα∞Φ. ╧εδ Ωδα±±α ControlPanel╤δσΣ≤■∙Φσ ∩ ≥ⁿ ∩εδσΘ ⌡≡αφ ≥ ±±√δΩΦ φα Ωφε∩ΩΦ, ≤∩≡αΓδ ■∙Φσ ±≥≡αφΦ÷α∞Φ ßδεΩφε≥α: Button btNext; Button btPrev; Button btBgColor; Button btFgColor; Button btFont; ╧εδσ pCard ⌡≡αφΦ≥ ±±√δΩ≤ φα ∩αφσδⁿ ßδεΩφε≥α: Panel pCard; ▌≥α ±±√δΩα ΦφΦ÷ΦαδΦτΦ≡≤σ≥± Ωεφ±≥≡≤Ω≥ε≡ε∞ Ωδα±±α. ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α ControlPanel┬ ταΣα≈≤ Ωεφ±≥≡≤Ω≥ε≡α Ωδα±±α ControlPanel Γ⌡εΣΦ≥ τα∩ε∞ΦφαφΦσ ±±√δΩΦ φα ∩αφσδⁿ ßδεΩφε≥α, ≤±≥αφεΓΩα ≡σµΦ∞α ≡ατ∞σ∙σφΦ Ωε∞∩εφσφ≥ GridLayout, α ≥αΩµσ ±ετΣαφΦσ Φ ΣεßαΓδσφΦσ Γ φΦµφ■■ ∩αφσδⁿ ≤∩≡αΓδ ■∙Φ⌡ Ωφε∩εΩ: public ControlPanel(Panel pCardPanel) { pCard = pCardPanel; setLayout(new GridLayout(2,3)); btBgColor = new Button("Background Color"); btFgColor = new Button("Foreground Color"); btFont = new Button("Set Font"); btNext = new Button("Next"); btPrev = new Button("Prev"); add(btBgColor); add(btFgColor); add(btFont); add(btNext); add(btPrev); } ╩φε∩ΩΦ ≡α±∩εδαπα■≥± Γ ≈σΘΩα⌡ ≥αßδΦ÷√, ±εΣσ≡µα∙σΘ ΣΓσ ±≥≡εΩΦ Φ ≥≡Φ ±≥εδß÷α. ┬ ÷σδε∞ Ωεφ±≥≡≤Ω≥ε≡ Ωδα±±α ControlPanel φσ Φ∞σσ≥ φΦΩαΩΦ⌡ Φφ≥σ≡σ±φ√⌡ ε±εßσφφε±≥σΘ. ╠σ≥εΣ action╠σ≥εΣ action ≤∩≡αΓδ σ≥ ≡αßε≥εΘ ßδεΩφε≥α, ε≥εß≡αµα σπε ±≥≡αφΦ÷√. ╩επΣα ∩εδⁿτεΓα≥σδⁿ φαµΦ∞ασ≥ φα Ωφε∩ΩΦ, Γ√ßΦ≡α■∙Φσ ±≥≡αφΦ÷√ ßδεΩφε≥α, ∞σ≥εΣ action Γ√ΣΓΦπασ≥ φ≤µφ≤■ ±≥≡αφΦ÷≤ φα ∩σ≡σΣφΦΘ ∩δαφ ± ∩ε∞ε∙ⁿ■ ∞σ≥εΣα show: if(evt.target.equals(btBgColor)) { ((CardLayout)pCard.getLayout()).show( pCard, "BgColor"); } else if(evt.target.equals(btFgColor)) { ((CardLayout)pCard.getLayout()).show( pCard, "FgColor"); } else if(evt.target.equals(btFont)) { ((CardLayout)pCard.getLayout()).show( pCard, "Font"); } ┬ Ωα≈σ±≥Γσ ∩σ≡Γεπε ∩α≡α∞σ≥≡α ²≥ε∞≤ ∞σ≥εΣ≤ ∩σ≡σΣασ≥± ΦΣσφ≥Φ⌠ΦΩα≥ε≡ ∩αφσδΦ ßδεΩφε≥α, α Γ Ωα≈σ±≥Γσ Γ≥ε≡επε - Φ∞ ±≥≡αφΦ÷√, Ωε≥ε≡≤■ φσεß⌡εΣΦ∞ε ε≥εß≡ατΦ≥ⁿ. ╓ΦΩδΦ≈σ±ΩΦΘ ∩σ≡σßε≡ ±≥≡αφΦ÷ ßδεΩφε≥α Γ√∩εδφ σ≥± ± ∩ε∞ε∙ⁿ■ ∞σ≥εΣεΓ next Φ previous, ±εε≥Γσ≥±≥Γσφφε: else if(evt.target.equals(btNext)) { ((CardLayout)pCard.getLayout()).next( pCard); } else if(evt.target.equals(btPrev)) { ((CardLayout)pCard.getLayout()). previous(pCard); } |